package zz.note.satoken.controller;

import cn.dev33.satoken.annotation.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @SaCheckLogin: 登录认证 —— 只有登录之后才能进入该方法
 * @SaCheckRole("admin"): 角色认证 —— 必须具有指定角色标识才能进入该方法
 * @SaCheckPermission("user:add"): 权限认证 —— 必须具有指定权限才能进入该方法
 * @SaCheckSafe: 二级认证校验 —— 必须二级认证之后才能进入该方法
 * @SaCheckBasic: HttpBasic认证 —— 只有通过 Basic 认证后才能进入该方法
 * @Author: ZZ
 * @date 2022/2/15
 */
@RestController
@Slf4j
@RequestMapping("/auth")
public class AuthController {

	// 登录认证：只有登录之后才能进入该方法
	@SaCheckLogin
	@RequestMapping("SaCheckLogin")
	public String SaCheckLogin() {
		return "登录认证成功";
	}

	// 角色认证：必须具有指定角色才能进入该方法
	@SaCheckRole("super-admin")
	@RequestMapping("SaCheckRole")
	public String SaCheckRole() {
		return "角色认证成功";
	}

	// 权限认证：必须具有指定权限才能进入该方法
	@SaCheckPermission("user-add")
	@RequestMapping("SaCheckPermission")
	public String SaCheckPermission() {
		return "权限认证成功";
	}

	// 二级认证：必须二级认证之后才能进入该方法
	@SaCheckSafe()
	@RequestMapping("SaCheckSafe")
	public String SaCheckSafe() {
		return "二级认证成功";
	}

	// Http Basic 认证：只有通过 Basic 认证后才能进入该方法
	@SaCheckBasic(account = "sa:123456")
	@RequestMapping("SaCheckBasic")
	public String SaCheckBasic() {
		return "Http Basic 认证成功";
	}

}
